/**
 * 普通业务模块示例
 */
define(['Util',
        '../common/getMenu',
        'list',
        'form',
        'dialog',
        'tab',
        'loading',
        '../common/getPath',
        'text!tpl/gooflow/projectGooflow.tpl',
        'text!tpl/gooflow/viewGooflow.tpl',
        'cookie',
        '../common/dateFormat',
        'style!../../css/gooflow/gooflow.css',
        '../common/components/gooflow/gooflow'
    ],
    function(Util, getMenu, List, Form, Dialog, Tab, Loading, AjaxPath, ProjectTpl, vGooflowTpl ,$cookie) {
        require(['style!css/style.css']);
        var $el = null;

        var _indexModule = null,
            list = null,
            tab = null,
            tplId = null,
            handLoading = null,
            loadingConfig = null,
            useMode = null,
            workflowBox = null,
            jsondata = null;
            projectAuthority = null;     //用户权限按钮判断；
        var initialize = function(indexModule, options, tabItem) {
            $el = $(ProjectTpl);
            _indexModule = indexModule;

            // 事件--点击切换tab后事件回调
            $(tabItem).on("tabActive", function() {
                tabItem.show(true); // 刷新表单
            });

            tab = tabItem;
            createLoading();
            tplId = options.menuId;

            // 业务相关代码
            eventInit();
            this.content = $el;

            // getProjectGooflowTab();
            getProjectAuthority($el);   //用户权限按钮判断；
            getMenu(tab, options.menuId);
        };

        var eventInit = function (){
            //页面除dialog按钮功能
            $el.on('click', '#addFlow', addFlow);//新建工作流
            $el.on('click', '#delFlow', delDialogBox);//删除
            $el.on('click', '.flowDefaultBtn', defaultFlow);//默认
            $el.on('click', '.flowCopyBtn', copyFlow);//复制
            $el.on('click', '.flowEditBtn', editFlow);//修改
            $el.on('click', '.flowDeleteBtn', delDialogBox);//删除
            $el.on('click', '.flow-tab li', bindProjectGooflowTab);
            //$el.on('click', '.btnSearch', search);
            //$el.on('click', '.btnReset', searchRest);
            $('#tabList li.' + tplId).on('click', tabActive);
        }

        var tabActive = function() {
            // listInit();
            search();
            getMenu(tab, tplId);   
        }

        var search = function(pageIndex) {
            var data = {};
            data.useMode = $(".flow-tab li.actived").attr("data");
            list.search(data,pageIndex ? pageIndex : "");
            $(".gooflowContainer").find("a").removeClass("theSort");
        }
       
        //获取工作流Tab
        var getProjectGooflowTab = function(){
            Util.ajax.getJson(AjaxPath.project + "/dropdown?modual=dataWorkFlow&type=useMode", {}, function(result, isok) {
                if(result.returnCode==="0000"){
                    var tabStr = "";
                    $(result.beans).each(function(index, item) {
                        tabStr += '<li data="'+ item.key +'"><a href="javascript:;">'+ item.value +'</a></li>'
                    })
                    $(".flow-tab").html(tabStr);
                    $(".flow-tab li:first").addClass("actived");
                    useMode = $(".flow-tab li.actived").attr("data");
                    var data = {};
                    data.useMode = useMode;
                    listInit();
                    list.search(data);
                    $(".gooflowContainer").find("a").removeClass("theSort");
                }
            })
        };

        var bindProjectGooflowTab = function(e){
            var data={};
            $(this).addClass('actived').siblings().removeClass('actived');
            data.useMode = $(this).attr("data");
            list.search(data);
            $(".gooflowContainer").find("a").removeClass("theSort");
        }

        var listInit = function(){
            var config = {
                el: $('.gooflowContainer', $el),
                ajax: {    //所有jquery.ajax的配置项均可配置，这些配置将替换底层组件的配置；慎用
                    method:'GET'
                },
                field: {
                    boxType: 'checkbox',
                    key: 'id',
                    items: [
                    {
                        text: '工作流名称',
                        title: 'flowTitle',
                        name: 'flowTitle',
                        className: 'w120',
                        width:200,
                        sorting:1,
                        click: function (e, val,item) {
                            // console.log(item);
                            handLoading = new Loading(loadingConfig);
                            creatDialog(e, item);
                            handLoading.destroy();
                        },
                        render: function (item, val) {
                            val = $("<span/>").text(val).html();
                            val = val.replace(/\s/g, '&nbsp;');
                            return '<a href="javascript:;" style="outline:none;">' + val + '</a>';
                        }
                    },
                    {
                        text: '创建时间',
                        name: 'createTime',
                        className: 'w100',
                        width:200,
                        sorting:1,
                        render: function (item, val) {
                            var dateValue = new Date(val).Format("yyyy-MM-dd hh:mm:ss")
                            return dateValue;
                        }
                    },
                    {
                        text: '更新时间',
                        name: 'updateTime',
                        className: 'w100',
                        width:200,
                        sorting:1,
                        render: function (item, val) {
                            var dateValue = new Date(val).Format("yyyy-MM-dd hh:mm:ss")
                            return dateValue;
                        }
                    },
                    {
                        text: '操作',
                        name: '',
                        className: 'w100',
                        render: function (item, val) {
                            if(projectAuthority){
                            var defaultButton = "";
                            if(item.flowStatus=== 0){
                                defaultButton = '<button class="t-btn t-btn-blue t-btn-xs flowDefaultBtn" style="margin-right:8px;"><a style="color:#fff">设为默认</a></button>';
                            }else {
                                defaultButton = '<button class="t-btn t-btn-xs" style="margin-right:8px;pointer-events:none">&nbsp;&nbsp;&nbsp;&nbsp;默认&nbsp;&nbsp;&nbsp;&nbsp;</button>';
                            }
                            return '<div class="fn-center">'+ defaultButton +'<button class="t-btn t-btn-blue t-btn-xs flowCopyBtn" style="margin-right:8px;"><a style="color:#fff">复制</a></button><button class="t-btn t-btn-blue t-btn-xs flowEditBtn" style="margin-right:8px;"><a style="color:#fff">修改</a></button><button class="t-btn t-btn-blue t-btn-xs flowDeleteBtn"><a style="color:#fff">删除</a></button></div>';
                        } else{
                            return '<div class="fn-center">您没有权限操作该项!</div>'
                        }}
                    }]
                },
                page: {
                    customPages: [2, 3, 5, 10, 15, 20, 30, 50], //可选择每页显示多少条
                    perPage: 10, //默认每页显示多少条记录
                    total: true
                },//url: AjaxPath + "/projects/"+projectId+"/users?projectRoleId="+projectRoleId
                data: {//workFlows?useMode=#{useMode}
                    url: AjaxPath.project + "/workFlows"
                }
            };
            list = new List(config);
            // list.search();
        }
        //新建工作流
        var addFlow = function(){
            tab.createTab({
                title: '新建工作流',
                closeable: 1, //是否可以关闭 0false不可以|1true可以
                className: 'addGooflowTab'
            });
            tab.switchTab('新建工作流');
            var flowdata = {};
            flowdata.menuId = tplId;
            flowdata.dropActive = $(".tabProjectContainer .t-tabs-items.t-list-search.flow-tab li.actived").attr("data");
            require(['js/gooflow/addGooflow'], function(addGooflowContent) {
                var result = new addGooflowContent({}, flowdata, tab);
                tab.content(result.content);
            });
        }
        //删除工作流
        var delFlow = function(e){
            
            handLoading = new Loading(loadingConfig);
            if(e.currentTarget.id!=="delFlow"){
                $(".gooflowContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".gooflowContainer .sn-list-show table tbody tr").eq(e.currentTarget.parentNode.parentNode.parentNode.rowIndex).find('td').click();
            }
            var nodes = list.getCheckedRows();
            if(nodes.length < 1) {
                handLoading.destroy();
                config = {
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择至少一条数据进行删除！</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                };
                var dialog = new Dialog(config);
            } else {
                var data = [];
                for(var i = 0; i < nodes.length; i++) {
                   data.push(nodes[i].id);
                }
                var str = JSON.stringify(data);
                if(nodes.length === 1){
                    Util.ajax.getJson(AjaxPath.project+"/workFlows/delete/"+nodes[0].id, {} ,function(result, isok) {
                        var flag = result.returnCode;
                        if(flag !== '0000') {
                            handLoading.destroy();
                            new Dialog({
                                mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|tips确认对话框
                                title: '提示', //对话框标题
                                width: 300,
                                height: 120,
                                modal: true,
                                content: '<div style="text-align:center;margin-top:50px">'+result.returnMessage+'</div>', //对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                                cancelDisplay: false,
                                ok: function() {}, // 配置该项时才会出现ok按钮，回调函数可为空。如果指定 return false 则执行完方法后不关闭对话框。默认 return true
                                okValue: '关闭' //确定按钮的文本 默认是 ‘ok’
                            });
                            return;
                        } else if(flag === '0000'){
                            handLoading.destroy();
                            new Dialog({
                                mode: 'tips',
                                content: '<div style="text-align:center;margin-top:70px">删除成功！</div>',
                                width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                                height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                                cancelDisplay: false
                            });
                            search();
                        }
                    })
                } else {
                    var newArr = [];
                    for(var i = 0; i < nodes.length; i++ ){
                        var obj = {};
                        obj.id = nodes[i].id;
                        newArr.push(obj);
                    }
                    Util.ajax.postJson(AjaxPath.project+"/workFlows/batchDelete", {"data":JSON.stringify(newArr)}, function(result, isok) {
                        flag = result.returnMessage;
                        if(result.returnCode === '0000'){
                            handLoading.destroy();
                            new Dialog({
                                mode: 'tips',
                                content: '<div style="text-align:center;margin-top:70px">'+flag+'</div>',
                                width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                                height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                                cancelDisplay: false
                            });
                            search();
                        } else {
                            handLoading.destroy();
                            new Dialog({
                                mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|tips确认对话框
                                title: '提示', //对话框标题
                                width: 300,
                                height: 120,
                                modal: true,
                                content: '<div style="text-align:center;margin-top:50px">'+flag+'</div>', //对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                                cancelDisplay: false,
                                ok: function() {}, // 配置该项时才会出现ok按钮，回调函数可为空。如果指定 return false 则执行完方法后不关闭对话框。默认 return true
                                okValue: '关闭' //确定按钮的文本 默认是 ‘ok’
                            });
                            return;
                        }  
                    })
                }
                
            }
        }
        //更换默认
        var defaultFlow = function(e){
            $(".gooflowContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
            $(".gooflowContainer .sn-list-show table tbody tr").eq(e.currentTarget.parentNode.parentNode.parentNode.rowIndex).find('td').click();
           
            var nodes = list.getCheckedRows();
            var newObj =[];
            for(var i = 0; i < nodes.length; i++ ){
                var obj = {};
                obj.useMode = nodes[i].useMode;
                obj.id = nodes[i].id;
                newObj.push(obj);
            }
            Util.ajax.postJson(AjaxPath.project+"/workFlows/updateDefaultFlow", newObj[0], function(result, isok) {
                flag = result.returnMessage;
                if(result.returnCode === '0000'){
                   // handLoading.destroy();
                    new Dialog({
                        mode: 'tips',
                        content: '<div style="text-align:center;margin-top:70px">'+flag+'</div>',
                        width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                        height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                        cancelDisplay: false
                    });
                    search(list.pageIndex);
                } 
            });
        }
        //修改弹窗
        var creatDialog = function(e,item){
            Util.ajax.getJson(AjaxPath.project+"/workFlows/"+item.data.id, {}, function(result, isok) {
                if(result.returnCode==="0000"){
                    Util.ajax.getJson(AjaxPath.auth + '/authority/button/'+$cookie.get("userId")+'?datas=[{"mo":"10","btnId":""}]',{},function(json,status){
                        jsondata = result.beans.view_json;
                        item.data.memo = result.beans.description;
                        item.data.useModeName = result.beans.useModeName;
                        item.data.createTimeDate = new Date(item.data.createTime).Format('yyyy-MM-dd hh:mm:ss');
                        item.data.updateTimeDate = new Date(item.data.updateTime).Format('yyyy-MM-dd hh:mm:ss');
                        if(json.beans[0].mo === 1){
                            var config = {
                                mode: 'normal', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
                                title: item.data.flowTitle, //对话框标题，
                                content: Util.hdb.compile(vGooflowTpl)(item), //对话框内容，可以是字符串、html代码段,tpl对象。默认为loading状态（由点组成的圈。大段代码建议使用 tpl。
                                ok: function() {
                                    console.log('点击了修改按钮');
                                    editFlow(e, e.currentTarget.parentNode.rowIndex);
                                    return true;
                                },
                                cancel: function() {
                                    // listInit();
                                    return true;
                                },
                                cancelValue: '修改', //取消按钮的文本 默认是 ‘关闭’
                                okValue: '修改', //取消按钮的文本 默认是 ‘关闭’
                                cancelDisplay: false, //是否显示取消按钮 默认true显示|false不显示
                                width: 920, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
                                height: parseInt($(".sn-tab.J_tab_render").height()*0.8), //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
                                maxWidth: 240,//设置tips对话框的最大宽度,默认为240px。仅在tips对话框下生效，该项存在时，width属性将失效。
                                maxHeight: 'auto', //设置tips对话框的最大高度,默认为auto。仅在tips对话框下生效，该项存在时，height属性将失效。
                                padding:'0 16px 1em 10px',//(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
                                align: 'bottom left',//设置对话框与其他元素的对齐方式。仅在show(elem)与showModal(elem)传入元素时生效。默认值: "bottom left"。可选："top left" "top" "top right" "right top" "right" "right bottom" "bottom right" "bottom" "bottom left" "left bottom" "left" "left top"。
                                skin: 'dialogSkin dialogSkin2',//设置对话框额外的className参数,多个className请使用空格隔开。
                                fixed: false, //是否开启固定定位 默认false不开启|true开启
                                quickClose: false, //点击空白处快速关闭 默认false不关闭|true关闭
                                modal: true ,//是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
                                backdropBackground:'#000',//设置遮罩颜色，默认 #000。
                                backdropOpacity:0.7, //设置遮罩透明度，默认 0.7，取值范围：0~1 。
                                beforeOpen: function() {
                                    modalGooflow();
                                }, //对话框打开之前执行。
                                escClose:true,//esc键快速关闭对话框，默认为true
                                zIndex:990   // 对话框的z-index值，默认是1024。
                            };
                        } else {
                            var config = {
                                mode: 'normal', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
                                title: item.data.flowTitle, //对话框标题，
                                content: Util.hdb.compile(vGooflowTpl)(item),
                                cancel: function() {
                                    // listInit();
                                    return true;
                                },
                                cancelValue: '取消', //取消按钮的文本 默认是 ‘关闭’
                                cancelDisplay: true, //是否显示取消按钮 默认true显示|false不显示
                                width: 920, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
                                height: parseInt($(".sn-tab.J_tab_render").height()*0.8), //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
                                maxWidth: 240,//设置tips对话框的最大宽度,默认为240px。仅在tips对话框下生效，该项存在时，width属性将失效。
                                maxHeight: 'auto', //设置tips对话框的最大高度,默认为auto。仅在tips对话框下生效，该项存在时，height属性将失效。
                                padding:'0 16px 1em 10px',//(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
                                align: 'bottom left',//设置对话框与其他元素的对齐方式。仅在show(elem)与showModal(elem)传入元素时生效。默认值: "bottom left"。可选："top left" "top" "top right" "right top" "right" "right bottom" "bottom right" "bottom" "bottom left" "left bottom" "left" "left top"。
                                skin: 'dialogSkin dialogSkin2',//设置对话框额外的className参数,多个className请使用空格隔开。
                                fixed: false, //是否开启固定定位 默认false不开启|true开启
                                quickClose: false, //点击空白处快速关闭 默认false不关闭|true关闭
                                modal: true ,//是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
                                backdropBackground:'#000',//设置遮罩颜色，默认 #000。
                                backdropOpacity:0.7, //设置遮罩透明度，默认 0.7，取值范围：0~1 。
                                escClose:true,//esc键快速关闭对话框，默认为true
                                beforeOpen: function() {
                                    modalGooflow();
                                }, 
                                zIndex:990   // 对话框的z-index值，默认是1024。
                            };
                        }
                        var dialog = new Dialog(config);
                    });
                }else {
                    new Dialog({
                        mode: 'tips',
                        content: '<div style="text-align:center;margin-top:70px">'+result.returnMessage+'</div>',
                        width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                        height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                        cancelDisplay: false
                    });
                }
            });
        }
        //修改工作流
        var editFlow = function(e, index){
            if(!index && index!==0){
                $(".gooflowContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".gooflowContainer .sn-list-show table tbody tr").eq(e.currentTarget.parentNode.parentNode.parentNode.rowIndex).find('td').click();
            }else{
                $(".gooflowContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".gooflowContainer .sn-list-show table tbody tr").eq(index).find('td').click();
            }

            var datas = list.getCheckedRows();
            // console.log(datas);

            if(datas.length === 0 || datas.length > 1) {
                config = {
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择一条数据进行修改！</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                };
                var dialog = new Dialog(config);
            }else {
                //列表页选中第几页，修改跳转后回来保存，但新建会出问题
                // $('.searchProjectForm', $el).attr('pageIndex', list.pageIndex);
                tab.createTab({
                    title: '修改工作流',
                    closeable: 1, //是否可以关闭 0false不可以|1true可以
                    className: 'editGooflowTab'
                });
                tab.switchTab('修改工作流');
                Util.ajax.getJson(AjaxPath.project+"/workFlows/"+datas[0].id, {}, function(result, isok) {
                    var flowdata = datas[0];
                        flowdata.memo = result.beans.description;
                        flowdata.viewJsonData = result.beans.view_json;
                        flowdata.dropActive = datas[0].useMode;
                        flowdata.menuId = tplId;

                    require(['js/gooflow/editGooflow'], function(flowEditContent) {
                        var result = new flowEditContent({}, flowdata, tab);
                        tab.content(result.content);
                    });
                })
            }
        }
        //复制工作流
        var copyFlow = function(e, index){
            // console.log(e.currentTarget.parentNode.parentNode.rowIndex);
            
            if(!index && index!==0){
                $(".gooflowContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".gooflowContainer .sn-list-show table tbody tr").eq(e.currentTarget.parentNode.parentNode.parentNode.rowIndex).find('td').click();
            }else{
                $(".gooflowContainer .sn-list-content-locker.sn-list-show table tbody tr.selected td").click();
                $(".gooflowContainer .sn-list-show table tbody tr").eq(index).find('td').click();
            }

            var datas = list.getCheckedRows();
            // console.log(datas);

            if(datas.length === 0 || datas.length > 1) {
                config = {
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择一条数据进行修改！</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                };
                var dialog = new Dialog(config);
            }else {
                //列表页选中第几页，修改跳转后回来保存，但新建会出问题
                // $('.searchProjectForm', $el).attr('pageIndex', list.pageIndex);
                tab.createTab({
                    title: '新建工作流',
                    closeable: 1, //是否可以关闭 0false不可以|1true可以
                    className: 'copyGooflowTab'
                });
                tab.switchTab('新建工作流');
                Util.ajax.getJson(AjaxPath.project+"/workFlows/"+datas[0].id, {}, function(result, isok) {
                    var flowdata = datas[0];
                        flowdata.flowTitle = flowdata.flowTitle + " - 副本";
                        flowdata.memo = result.beans.description;
                        flowdata.viewJsonData = result.beans.view_json;
                        flowdata.dropActive = datas[0].useMode;
                        flowdata.menuId = tplId;
                    require(['js/gooflow/copyGooflow'], function(flowCopyContent) {
                        var result = new flowCopyContent({}, flowdata, tab);
                        tab.content(result.content);
                    });
                });
            }
        }
        //删除弹窗
        var delDialogBox = function(e) {
            var config = null;
            var nodes = list.getCheckedRows();
            if(nodes.length < 1 && e.currentTarget.id === 'delFlow') {
                config = {
                    mode: 'tips',
                    content: '<div style="text-align:center;margin-top:70px">请选择至少一条数据进行删除！</div>',
                    width: 300, //对话框宽度，可选项。normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 150, //对话框高度，可选项。normal默认值为400，confirm默认值为180，tips默认值为80
                    cancelDisplay: false
                };
                var dialog = new Dialog(config);
            } else {
                config = {
                    mode: 'confirm', //对话框模式，默认normal标准|tips浮动层|confirm确认对话框
                    title: "删除提示", //对话框标题
                    content: '<div style="text-align:center;margin-top:50px">确认删除选择的工作流?</div>' /* + content.substring(0,content.length-1)*/ , //对话框内容，可以是字符串、html片段、或dom对象,默认为loading状态（点组成的圈）
                    ok: function() {
                        delFlow(e);
                        return true;
                    }, // 配置该项时才会出现ok按钮，回调函数可为空。如果指定 return false 则执行完方法后不关闭对话框。默认 return true
                    okValue: '确定', //确定按钮的文本 默认是 ‘ok’
                    cancel: function() {}, //取消按钮的回调函数,配置该项时才会出现关闭按钮，回调函数可为空。
                    cancelValue: '取消', //取消按钮的文本 默认是 ‘关闭’
                    cancelDisplay: true, //是否显示取消按钮 默认true显示|false不显示
                    width: 300, //对话框宽度，normal默认值为600，confirm默认值为300，tips默认值为240
                    height: 120, //对话框高度，normal默认值为400，confirm默认值为180，tips默认值为80
                    padding: '0 16px 1em 10px', //(默认值: 继承 css 文件设置) 设置消息内容与消息容器的填充边距，即 style padding属性
                    align: 'bottom right', //设置对话框与其他元素的对齐方式。仅在show(elem)与showModal(elem)传入元素时生效。默认值: "bottom left"。可选："top left" "top" "top right" "right top" "right" "right bottom" "bottom right" "bottom" "bottom left" "left bottom" "left" "left top"。
                    skin: 'dialogSkin dialogSkin2', //设置对话框额外的className参数,多个className请使用空格隔开。
                    fixed: true, //是否开启固定定位 默认false不开启|true开启
                    quickClose: false, //点击空白处快速关闭 默认false不关闭|true关闭
                    modal: true, //是否开启模态框状态  默认false不开启|true开启,confirm默认状态为true
                    beforeOpen: function() {}, //对话框打开之前执行。
                    zIndex: 990 // 对话框的z-index值，默认是1024。
                };
                var delDialog = new Dialog(config)
            }
        };
        
        var createLoading = function() {
            loadingConfig = {
                el: 'body', //组件要绑定的容器，默认为body（此项可不配置或留空）
                className: 'loading', //组件外围的className
                position: 'center', //提示信息位置，顶部top|默认center中央
                width: '300', //loading的宽度,非必须，默认300
                height: 'auto', //loading的宽度,非必须，默认auto
                mask: 1, //是否显示遮罩， 0不显示|默认1显示
                animate: 1, //是否显示动画效果， 0不显示|默认1显示
                mode: 'layer', //展示方式 loadingLine线条方式|默认layer弹层方式
                text: '加载中...', //提示文字，默认 加载中...
                icon: 'dotCycle', //文字前面的gif动画， 默认dotCycle有点组成的圈|cmcc移动图标|cmccLarge大的移动图标
            }
        }
        

        //弹层显示流程图
        var modalGooflow = function() {
            var property = {
                width: 903,
                height: 300,
                toolBtns: [],
                toolBtnNames: [],
                haveHead: false, //是否显示顶部
                // headBtns: ["new", "open", "save", "undo", "redo", "reload"], //如果haveHead=true，则定义HEAD区的按钮
                headBtns: ["undo", "redo",], //如果haveHead=true，则定义HEAD区的按钮
                haveTool: false, //是否显示左侧
                // haveGroup: true,
                useOperStack: true,
            };

            if(!jsondata){
                jsondata={
                    "title":"",
                    "nodes":{},
                    "lines":{},
                    "areas":{},
                    "initNum":0
                };
            }else{
                jsondata = JSON.parse(jsondata);
            }

            workflowBox = $.createGooFlow($("#modalGooflowBox"), property);
            workflowBox.clearData();
            workflowBox.loadData(jsondata);
        }

        //按钮权限；界面按钮权限；和list表按钮权限；
        var getProjectAuthority = function(){
            require(['js/btnAuthority'], function(Authority){
                new Authority($el);
            });
            Util.ajax.getJson(AjaxPath.auth + '/authority/button/'+ $cookie.get("userId") +'?datas=[{"mo":"7","btnId":""}]', {}, function(result, json){
                if(result.returnCode==="0000"){
                    if(result.beans[0].mo===0){
                        projectAuthority = false;
                    }else {
                        projectAuthority = true;
                    }
                    getProjectGooflowTab();
                }
            });
        }


        return initialize;
    });